package com.fast.fast.common.gateway.service;

import com.fast.fast.common.base.vo.Result;
import com.fast.fast.common.gateway.entity.SysUser;

import java.util.Map;

/**
 * 登录Service
 *
 * @author lyf
 * @date 2022/01/01 00:00 周六
 **/
public interface LoginService {

    /**
     * 登录
     *
     * @param sysUser 登录用户
     * @return 当前登录账号所拥有的登录信息
     */
    Result<Map<String, Object>> login(SysUser sysUser);

    /**
     * 退出，会删除浏览器cookie中的satoken，同时删除redis中对应的key
     *
     * @return
     */
    Result<?> logout();

    /**
     * 获取redis中登录用户的权限和角色信息
     *
     * @return
     */
    Result<?> getPermAndRole();

    /**
     * 前端通过ajax轮询，监听登录用户的权限和角色是否发生变化，若发生变化将自动刷新页面
     *
     * @return
     */
    Result<?> refreshPermAndRole();

    /**
     * 获取登录用户集合
     *
     * @param sysUser 登录用户
     * @return
     */
    Result<?> listOnlineUsers(SysUser sysUser);

}
